The use of various forms of computing equipment to automate or otherwise perform a number of tasks has become widespread. With the proliferation of processor-based platforms, such as personal computers (PCs), tablet devices, smart phones, personal digital assistants (PDAs), and servers, capable of executing instruction sets for providing specialized or generalized functionality, such as word processing, accounting, document generation and management, printing, data communication, and image capture, generation, and management, the use of such computing equipment has become nearly ubiquitous in both business as well as personal settings. One example of functionality that is provided through the use of such computing equipment is the automation of tasks associated with the shipment of items, including the management of item orders, managing the picking and packing of items for order fulfillment, generation of invoices, packing slips, manifests, shipping labels, and postage or other prepaid shipping indicia, and tracking of shipment of items through a shipping service provider, as provided by the SHIPSTATION shipping management system provided by Auctane LLC of Austin Tex.
A number of different fundamental configurations have been implemented with respect to the system implementations for providing the various functionality. For example, localized deployment of one or more applications, wherein the application(s) providing the instructions for implementing various tasks is stored and executed by computing equipment local to the user (e.g., a user device, such as a PC, tablet device, smart phone, or PDA), may be utilized for providing desired functionality. Alternatively, cloud-based deployment of one or more applications, wherein the application(s) providing the instructions for implementing various tasks is stored and executed by computing equipment disposed in a network “cloud” (e.g., a group of servers remote from the user), may be utilized for providing desired functionality. Each such configuration, however, has advantages and disadvantages associated therewith.
Configurations implementing localized deployment of applications provide advantages with respect to the applications ability to interoperate or otherwise interact with peripherals local to the user. For example, in performing one or more tasks of the functionality enabled by the localized application it may be desirable to provide output to and/or obtain input from one or more computing resources, such as printers, scales, scanners, and storage devices, disposed local to the user or otherwise under control of or accessible by the user. As a specific example, the localized application may comprise a shipping management program whereby a user may wish to have the weight of an item to be shipped input by an electronic scale and/or a shipping label printed in association with shipping related functionality provided by the application. In a localized application configuration, the application generally has direct access to such computing resources, such as to directly communicate with and control the operation of those resources, thereby facilitating user interaction with the application which results in the desired operation of the resources.
However, such configurations implementing localized deployment of applications have disadvantages associated with the deployment and maintenance of the localized applications. For example, the user or other user entity must obtain and maintain computing equipment (e.g., processor capability, memory capacity, etc.) sufficient to store and execute the localized application(s). Moreover, the user or other user entity must manage and monitor the lifecycle of the application(s) (e.g., install and configure the application, maintain version control, obtain and install updates and patches, coordinate resource interoperability maintenance, etc.). Such management and maintenance associated with localized applications can be quite expensive in terms of monetary costs, time, and computing resources.
Accordingly, configurations implementing cloud-based deployment of applications have become quite popular in recent years. Such cloud application deployments provide advantages with respect to the deployment and maintenance of the applications. For example, the burden for obtaining and maintaining computing equipment (e.g., processor capability, memory capacity, etc.) sufficient to store and execute the application(s) is largely placed upon the cloud application provider. A user of the cloud application typically needs only a relatively modestly equipped client system (e.g., processor-based system executing a browser, such as INTERNET EXPLORER, GOOGLE CHROME, or FIREFOX, or thin client application) in order to interface with and implement functionality of the cloud application. Moreover, the user is relieved of the need to manage or monitor the lifecycle of the application(s). Instead, the cloud application provider generally installs and configures the application, maintains version control, obtains and installs updates and patches, coordinates resource interoperability maintenance, etc. Accordingly, the users are enabled to enjoy the various upgrades, enhancements, and patches to the applications as they are put online by the cloud application provider, without the user having to maintain or monitor the application lifecycle. Thus, users of such configurations implementing cloud-based deployment of applications are typically saved significant expenses in terms of monetary costs, time, and computing resources.
Nevertheless, such configurations implementing cloud-based deployment of applications have disadvantages associated therewith. For example, as discussed above, it may be desirable to provide output to and/or obtain input from one or more computing resources disposed local to the user or otherwise under control of or accessible by the user in performing one or more tasks of the functionality enabled by the applications. In a cloud-based application configuration, the cloud application generally does not have direct access to such computing resources, and thus cannot directly communicate with and control the operation of those resources. For example, security features of browsers inhibit direct interaction with or control of various resources by a cloud application, such as to prevent unauthorized or malicious use of such resources (e.g., the unsolicited printing of coupons or advertising media when a user interfaces with a webpage, the harvesting of personal or sensitive data by a webserver, etc.). Although providing desired security with respect to the unauthorized or malicious use of resources, such inhibiting direct interaction with or control of resources by the cloud application results in an inability by the cloud application to directly implement particular user interaction which results in desired operation of the resources. For example, if a user wishes to print to a local printer from a cloud application using a browser client, the user must control the cloud application to download an electronic instance of the desired document (e.g., as a portable document format (PDF) file) to the browser and then utilize printing functionality of the browser itself (a localized application) to print the document. This operation requires multiple steps, including steps which are external to the cloud application.
One attempt at a solution to the inability to print directly from a cloud-based application has been made in the form of the GOOGLE CLOUD PRINT product. GOOGLE CLOUD PRINT provides a cloud server based solution which is integrated with the user's browser to connect printers to the web, whereby the printers are made available to applications via a GOOGLE CLOUD PRINT server and web browser in communication with the printer. Although enabling a cloud application to ultimately print to a user's printer, the document to be printed must first be rendered as a PDF file, transmitted to the GOOGLE CLOUD PRINT server, and then retransmitted to the web browser which is in communication with the printer. This repeated transmission of the document print file can result in appreciable delay in printing of the document, particularly when the document is large or complicated, and thus does not provide an adequate solution for all situations.
Another solution has been to implement a light server at the user device for enabling printing. FIG. 1 shows an implementation such a light server. The light server configuration provides a relatively small application (e.g., smaller than an application providing a fully featured server configuration) which provides operation for, or emulating, certain functionality of a server.
User interface client application 121 is natively adapted to interact with a server (e.g., web server), such as using the hypertext transfer protocol (HTTP). Communication link 101 between user interface client application 121 and cloud-based application 111 may thus provide a HTTP communication link. Light server 122 provides an interface emulating that of a server for which user interface client application 121 is adapted to communicate (e.g., providing a HTTP interface) for interacting with user interface client application 121 and cloud client application 121A to control printer 130. Accordingly, communication link 102 between user interface client application 121 and light server 122 may thus provide a HTTP communication link. Light server 122 may implement an application programming interface (API) or other suitable interface to enable communication link 103 between light server 122 and printer 130. Light server 122 interacts with cloud-based application 111 to receive data to be provided to printer 130. Accordingly, communication link 104 between light sever 122 and cloud-based application 111 may provide a HTTP communication link.
In operation, a user may interact with cloud-based application 111 using cloud client application 121A hosted by user interface client application 121 in order to perform desired functionality supported by system 100. Where the interaction initiates tasks involving the use of printer 130, cloud client application 121A may direct commands (e.g., requests, control messages, etc.) to light server 122.
It should be appreciated that it may be desirable to implement security with respect to the communications transmitted external to user device 120, such as to prevent unauthorized monitoring of the communications, to avoid fraudulent use of the cloud-based application, etc. Accordingly, communication link 101 and/or communication link 104 between user device 120 and cloud-based application 111 may be configured to provide requisite security, such as by implementing a hypertext transfer protocol secure (HTTPS) communications protocol. The implementation of such secure communications protocol may employ the use of appreciable resources, such as memory and computing cycles, in obfuscating and de-obfuscating (e.g., encrypting and unencrypting) the data placed on the secure communication link. Accordingly, in addition to it typically not being necessary to secure communications internal to user device 120, it may not be practical or possible to implement such secure communications protocols with respect to communication link 102 between light server 122 and cloud client application 121A. For example, when implementing a secure sockets layer (SSL) protocol for providing secure communications the distribution of a “server identification certificate” (or SSL certificate) is typically utilized. Servers are generally required to keep the “private” portion of the SSL certificate protected and secret, while distributing the “public” portion of the SSL certificate to any requesting party. However, distributing the full SSL certificate with a client application (here, the light server executable on the user device) would breach that security by effectively making the “private” portion of the SSL certificate public. Moreover, light server 122 may require appreciably more computer code to implement such secure communications protocols, thus rendering the application less “light”. Likewise, the use of such secure communications protocols at light server 122 and user interface client application 121 to secure communication link 102 may consume considerable processing power of user device 120. Accordingly, although such secure communication protocols may be implemented with respect to communication link 101 and/or communication link 104, configurations may not implement a secure communication protocol with respect to communication link 102.
As data security issues continue to evolve, changes in the implementation of security techniques by user interface client applications, such as web browsers, are implemented. In a recent iteration of such security technique changes, many web browsers have implemented procedures to prohibit simultaneously maintaining both secure and unsecure communication links with respect to a same cloud client application. Essentially, if the application is running in a secure “SSL” mode in the browser, then it must only communicate with other “secure” servers as per these recently introduced security restrictions. Accordingly, instances of light server 122 may be required to utilize secure communication protocols with respect to communication link 102 where secure communication protocols are utilized with respect to communication link 101. Such an implementation may result in an undesirable or impractical configuration of the light server and/or undesired performance by user device 120.